Methods, systems and computer program products for automatic task distribution

ABSTRACT

Methods, systems and computer program products are provided which automatically distribute tasks associated with a telephone system and tasks associated with a computer system between a plurality of agents tracking ACD telephone status of the plurality of agents and tracking computer status of the plurality of agents. When a request for a computer task is received, an agent of the plurality of agents is assigned to the computer task corresponding to the received request based on the ACD telephone status and the computer status of the agent of the plurality of agents.

FIELD OF THE INVENTION

The present invention relates generally to task distribution and moreparticularly to automatic task distribution to agents.

BACKGROUND OF THE INVENTION

With the increase in use of the Internet, there has also been anincrease in the availability of support for products or services and theopportunity to conduct business over the Internet. Typically, theseservices are provided by e-mail, chat sessions, voice over IP (InternetProtocol) or other electronic means of communication. Furthermore, theseservices are often provided by the same individuals that provideconventional telephone services. Thus, the same individual may beresponsible for answering e-mail questions and for answering questionsover the telephone.

In a conventional telephone system, users will often log onto atelephone switch device with automatic call distribution (ACD). Such atelephone switch device would be provided with characteristics of theuser logged on and then match those characteristics with characteristicsof incoming calls so that a user with the correct qualifications orexpertise answers the incoming call. For example, a caller may beprovided with several options from a voice menu and when the option isselected the call is routed to a user associated with the selectedoption.

Despite the fact that the individual answering telephone calls ande-mail or other electronic messages may be the same individual,currently, there are limited mechanisms for coordinating these taskssuch that when an individual is answering an e-mail they do not receivetelephone calls or other similar situations. Currently, to avoid thesesituations, users may need to take manual actions to log off thetelephone switch or make themselves unavailable, in order to not receivetelephone calls.

In light of the above discussion a need exists for improvement in theassignment of tasks across various message media.

SUMMARY OF THE INVENTION

In view of the above discussion, it is an object of the presentinvention to provide automatic task distribution including distributionof telephone and computer related tasks.

It is another object of the present invention to facilitate thecoordination of telephone and computer related tasks.

It is another object of the present invention to use existing telephoneequipment in the coordination of telephone and computer related tasks.

These and other objects of the present invention are provided bymethods, systems and computer program products which automaticallydistribute tasks associated with a telephone system and tasks associatedwith a computer system between a plurality of agents tracking ACD andtelephone status of the plurality of agents and tracking computer statusof the plurality of agents. When a request for a computer task isreceived, an agent of the plurality of agents is assigned to thecomputer task based on the ACD status, telephone status and the computerstatus of the agent of the plurality of agents.

In a further embodiment, when a request for a telephone task is receivedan agent of the plurality of agents is assigned based on the ACD status,telephone status and the computer status of the agent of the pluralityof agents. Such a telephone task may be an incoming telephone call.

By tracking the ACD status, telephone status and the computer status ofan agent, telephone tasks and computer tasks may be coordinated suchthat agents occupied by telephone tasks will not be assigned computertasks and agents occupied by computer tasks will not be assignedtelephone tasks. Thus, the present invention allows for automaticdistribution of both computer and telephone tasks. Furthermore, thisdistribution is coordinated to reduce the likelihood of interferencebetween the two types of tasks.

In a further embodiment of the present invention, the ACD status,telephone status and the computer status of the assigned agent areupdated to indicate that the agent is unavailable. Furthermore, the ACDstatus and telephone status may be tracked by maintaining a list of thestatus of agents of the plurality of agents which are logged onto atelephone switch with automatic call distribution (ACD), wherein thelist of status of agents corresponds to the status of the agent withrespect to the telephone switch. Information about the call queueassociated with the telephone switch may also be maintained. Trackingcomputer status may be accomplished by maintaining a list of the statusof agents of the plurality of agents which are logged onto a virtualACD, wherein the list of status of agents corresponds to whether theagent is currently assigned at least one of a computer task and atelephone task. Also, a copy of a computer task request queue associatedwith the virtual ACD may be maintained.

A virtual ACD system, as referenced above, preferably includes one ormore request queues. The agents may log on to one or more of thesequeues which corresponds to the capabilities or skill they possess.

By utilizing tracking, the status of a switch with ACD capabilities (aconventional ACD) switch may be utilized. Thus, the present inventionmay be utilized with existing ACD telephone systems which allow forcommunication and tracking of the switch status.

In still another embodiment of the present invention, each agent hasassociated with it agent characteristics. In such a case, a computertask request is received which has associated with it characteristicswhich are to be associated with an agent to be assigned to the requestedcomputer task. A list of available agents from the plurality of agentsis generated and an agent is selected from the list of available agentshaving agent characteristics that correspond to the characteristicsassociated with the received request. The received computer task requestis then assigned to the selected agent.

The status of the agent may be updated by requesting that a telephoneswitch having an ACD make the selected agent unavailable. The list ofthe status corresponding to the status of the agents logged into thetelephone switch is then updated when the telephone switch indicatesthat the agent is unavailable. The list of the status of agents of theplurality of agents which are logged onto a virtual ACD is also updatedto indicate that the selected agent is unavailable.

The list of available agents may be generated by determining if an agentis available to accept a virtual ACD task and determining if the agentis either logged off the telephone switch or available to take a callfrom the telephone switch. If such is the case, the agent may be addedto the list of available agents.

Also, if agents are not available which correspond to thecharacteristics associated with the task request, computer task requestsmay be stored in a computer task request queue.

In a particular system embodiment of the present invention, a system forautomatically distributing both telephone tasks and computer tasks toagents has an agent application and a telephone switch having anautomatic call distribution (ACD) feature for distributing telephonetasks to the agent application. A virtual ACD communicates with thetelephone switch, tracks telephone task availability status of the agentapplication, tracks the computer task availability of the agentapplication and distributes computer tasks to the agent applicationbased on the telephone task availability of the agent application andthe computer task availability of the agent application.

In a particular system embodiment, a computer telephone interface whichprovides communication between the telephone switch and the virtual ACD.Furthermore, the system may incorporate storage means for storingenterprise specified rules accessible to the virtual ACD. In such acase, the virtual ACD further distributes computer tasks to the agentapplication based on the enterprise specific rules stored in the storagemeans.

The system may also include a virtual ACD request queue operablyassociated with the virtual ACD for storing computer task requests untilan application agent is available to handle the requests.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of one embodiment of the present invention;

FIG. 2 is a flowchart illustrating operations of the present inventionduring an agent logon process;

FIG. 3 is a flowchart illustrating operations of the present inventionto handle an incoming call; and

FIG. 4 is a flowchart illustrating operations of the present inventionin response to an application requesting an agent.

DETAILED DESCRIPTION OF THE INVENTION

The present invention now will be described more fully hereinafter withreference to the accompanying drawings, in which preferred embodimentsof the invention are shown. This invention may, however, be embodied inmany different forms and should not be construed as limited to theembodiments set forth herein; rather, these embodiments are provided sothat this disclosure will be thorough and complete, and will fullyconvey the scope of the invention to those skilled in the art. Likenumbers refer to like elements throughout.

A preferred embodiment of the present invention will now be describedwhile referring to the accompanying drawings. FIG. 1 is a block diagramof an automated task distribution system according to the presentinvention. As seen in FIG. 1, the switch domain 30 includes aconventional telephone switch 20 with automated call distribution (ACD)which communicates with a computer telephone interface (CTI) server 22.The switch 20 routes telephone calls to telephone equipment 33associated with an agent 34 logged onto the switch 20 utilizing theautomatic call distribution system of the switch 20. The switch 20maintains the status 24 of agents 34 logged onto the switch 20 and alsomaintains a call queue 26 which includes calls 28 which have yet to berouted to the telephone equipment 33 of an agent 34 logged onto theswitch 20.

The CTI server 22 communicates with the virtual ACD 32. The virtual ACD32 allows computer applications 35 associated with agents 34 to log ontothe virtual ACD 32. The virtual ACD 32 also allows requests 37 fromapplications 36 and uses enterprise specified rules 38 to assign agents34 to the application requests 37. In order to select an agent 34 for anapplication request 37, the virtual ACD 32 communicates with the CTIserver 22 to obtain agent status from the switch 20 and creates a shadowof the agent switch status 40 which maintains information about theagent status 24. The virtual ACD 32 also creates a shadow of the switchcall queue 42 which maintains information about the call queue 26. Aswill be appreciated by those of skill in the art, the shadows 40 and 42need not mirror the agent switch status and the call queue but need onlycontain information which may be pertinent to the assignment of tasks,such as the time of the oldest call in a queue and the number of callsin the queue. The virtual ACD 32 also maintains the status of thecomputer applications 35 associated with agents 34 logged on the virtualACD 44 and a queue 46 of requests for computer tasks such as applicationrequests 37 to the virtual ACD 32.

By coordinating the virtual ACD 32 which distributes computer tasks(e.g. application requests 37) and the switch 20 which distributestelephone tasks (e.g. telephone calls), agents 34 logged onto both mayonly be assigned either a computer task (for example resulting from anapplication request 37) or a telephone task (for example resulting froman incoming call or assignment of a call 28 in the call queue 26) untilthe respective task is completed. Telephone tasks are tasks related totelephone calls such as answering incoming calls. Computer tasks aretasks which are typically carried out using a computer, such asresponding to e-mail, participating in chat sessions, utilizing voiceover IP and the like. In other words, computer tasks are those tasksdistributed by the virtual ACD 32 and telephone tasks are those tasksdistributed by the switch 20.

Operations for various aspects of one embodiment of the presentinvention are illustrated in detail in FIGS. 2 through 4 which areflowchart illustrations. It will be understood that each block of theflowchart illustrations, and combinations of blocks in the flowchartillustrations, can be implemented by computer program instructions.These computer program instructions may be provided to a processor orother programmable data processing apparatus to produce a machine, suchthat the instructions which execute on the processor or otherprogrammable data processing apparatus create means for implementing thefunctions specified in the flowchart block or blocks. These computerprogram instructions may also be stored in a computer-readable memorythat can direct a processor or other programmable data processingapparatus to function in a particular manner, such that the instructionsstored in the computer-readable memory produce an article of manufactureincluding instruction means which implement the functions specified inthe flowchart block or blocks.

Accordingly, blocks of the flowchart illustrations support combinationsof means for performing the specified functions, combinations of stepsfor performing the specified functions and program instruction means forperforming the specified functions. It will also be understood that eachblock of the flowchart illustrations, and combinations of blocks in theflowchart illustrations, can be implemented by special purposehardware-based computer systems which perform the specified functions orsteps, or by combinations of special purpose hardware and computerinstructions.

FIG. 2 illustrates operations according to the present invention when acomputer application 35 associated with an agent 34 logs on to thevirtual ACD 32. As seen in FIG. 2, the logon process begins when thevirtual ACD 32 obtains the characteristics of the agent logging on andlogs the agent onto the switch 20 if the agent is capable of handlingtelephone tasks (block 100). Alternatively, the agent 34 can log on tothe switch using the telephone equipment 33. The switch 20 then notifiesthe virtual ACD 32 of the log on event. The characteristics of the agent34 may be received from the agent at logon or may be in advance storedby the virtual ACD 32 and then accessed at logon and associated with theagent logging on. Examples of the agent characteristics may be thetelephone devices associated with the agent, the agent's skill level ortype of skill, the TCP/IP address of the current computer associatedwith the computer application 35 (the agent's workstation), the e-mailaddress of the agent or other such characteristics as allow the virtualACD 32 to automatically assign tasks to the agent 34.

After obtaining the agent characteristics and logging the agent onto theswitch 20, entries are established in the status areas to reflect thepresence of the agent (block 102). Thus, for example, the status of theagent will be placed in the virtual ACD agent status area 24. Similarly,when the CTI server 22 reports to the virtual ACD 32 that the agent haslogged on to the switch 20 the agent status will be placed in the shadowof agent switch status 40. The virtual ACD 32 then requests that the CTIserver 22 monitor the status of the telephone devices associated withthe agent so that the status of the agent on the switch 20 may bemaintained (block 104).

The agent then becomes available to the virtual ACD 32 to assigncomputer tasks to the agent 34 (block 106). If there is a task to beassigned to the agent 34 (block 108) then it is determined if the taskis a telephone task (i.e. a telephone call) (block 110) and if socontrol of the agent is released to the switch 20 to assign the task(block 114). If the task is not a telephone task then the task is acomputer task and the virtual ACD 32 assigns the task to the agent 34(block 112). After release of the agent 34 to the switch 20 or afterassignment of the computer task or if no task is waiting in either theshadow of the switch call queue 42 or the virtual ACD request queue 46,then the logon process is completed. Thus, the shadow of agent switchstatus 40 and the status of the virtual ACD agents 44 would be updatedto reflect the availability of the agent 34. The virtual ACD 32 and theswitch 20 are then ready to assign the next task.

FIG. 3 illustrates operations of the present invention when a call isreceived by the switch 20. When a call is received by the switch 20 itutilizes its ACD process to select an available agent 34 for the calland the call is routed to the agent (block 200). If no agent isavailable, the call is stored in the call queue 26 until an agent isavailable. The procedures in handling calls (i.e. telephone tasks) maybe the same for handling calls in the call queue 26. The virtual ACD 32is notified by the CTI server 22 of the call being sent to the agent andthus making the agent unavailable for another ACD task (block 202). Thevirtual ACD 32 then updates its status areas to reflect theunavailability of the agent (block 204). Thus, the shadow of agentswitch status 40, the shadow of the switch call queue 42 and the statusof the virtual ACD agents 44 are updated in light of the call beingassigned to an agent.

The switch 20 then delivers the telephone task to the telephoneequipment 33 associated with the agent 34 (block 208). Then the virtualACD 32 and the switch 20 wait for the agent 34 to be available (block210). Typically, the agent 34 will become available either when theagent 34 sends a message to the switch indicating that the agent isavailable such as dialing a code on the telephone equipment 33associated with the agent 34 or when the agent hangs up the phone.Preferably, according to the present invention the agent signalsavailability directly to the virtual ACD 32. By the agent signalingavailability directly it reduces the likelihood that the switch 20 willtake immediate control of the agent 34 and, hence, starve the virtualACD 32 of opportunities to assign tasks to agents. Otherwise, the switch20 may assign a task to an agent 34 before the virtual ACD 32 is awarethat an agent is available. However, the present invention may beutilized with the immediate notification system (i.e. the agent isavailable to the switch immediately upon termination of an existingcall) if the starvation issue is taken into account.

After the agent becomes available, the virtual ACD status areas areupdated to reflect this availability and operation then begins at block106 of FIG. 2 (block 212). Thus, the shadow of agent switch status 40and the status of virtual ACD agents 44 would be updated to reflect theavailability of the agent. The virtual ACD 32 and switch 20 are thenready to assign the next task.

FIG. 4 illustrates operations of the present invention when anapplication request is distributed. As seen in FIG. 4, when anapplication request is received, from, for example, application 36, thevirtual ACD 32 determines the characteristics associated with the taskof the application request (block 300). The virtual ACD 32 thendetermines which agents are available to handle the request (block 302).This determination may be made by accessing the status of virtual ACDagents 44 and the shadow of agent switch status 40 and determining whichagents are available to the virtual ACD 32, logged off or available tothe switch 20 and whose telephone is idle (e.g. the telephone status ofthe agent's telephone equipment indicates that the agent is not on thetelephone). The virtual ACD 32 then uses this list of available agentsto select an agent based on the enterprise specified rules 38 (e.g.current service level in ACD queues and the current number of signed onagents) and the characteristics of the agent which correspond to thecharacteristics associated with the request (block 304). If the shadowof agent switch status 40 of the agent 34 indicates that the agent 34 isavailable to the switch 20 (block 305) then the virtual ACD 32 requeststhe CTI server 22 to make the agent unavailable at the switch 20 (block306). When confirmation is received from the CTI server 22 that thechange in status is complete (block 308) the virtual ACD 32 makes theagent On VACD Task in the status of virtual ACD agents 44 (block 310).The virtual ACD 32 may also update the shadow of agent switch status 40.If the shadow of agent switch status 40 indicates that the agent 34 isunavailable, then the operations of block 306 and 308 need not becarried out.

The virtual ACD 32 then reports the agent selection to the applicationrequesting the agent 32 and the computer application 35 associated withthe agent (block 312). This report of the agent may take many formsdepending on the type of request. For example, in an e-mail task thereport may be providing the agents e-mail address. In a voice overTCP/IP the report may be providing the application with the IP addressof the agent. Information corresponding to the computer task may be madeavailable to the computer application 35 associated with the agent 34 inaddition to information about the assigned agent. This information canbe used to trigger a “screen pop” or similar action on the agentworkstation. As will be appreciated by those of skill in the art, anynumber of reporting methods may be used depending on the type of taskrequest. After reporting the agent to the requesting application, thevirtual ACD 32 waits for the release of the agent from the application(block 314) and makes the agent available by informing the CTI server 22of the change in status and updating the status areas to reflect theavailability of the agent and operation then begins at block 106 of FIG.2 (block 316).

While the present invention has been described with respect to incomingcalls and incoming task requests, as will be appreciated by those ofskill in the art in light of the present disclosure, these sameoperations may be equally applicable to distributing tasks from the callqueue 26 or the virtual ACD request queue 46. Any number of priorityschemes may be utilized in determining the order that calls or requestsare selected from the queues. Thus, a priority may be assigned to eachcall or request and then handled in priority order. Alternatively, anoldest first priority system may be utilized. As will be appreciated bythose of skill in the art other priority systems may be utilized whilestill obtaining the benefits of the present invention.

The status of the agents with respect to the virtual ACD 32 and theswitch 20 preferably includes several different status states. Forexample, with respect to virtual ACD status, the agent may have one ofthe status states in Table 1.

TABLE 1 Virtual ACD Agent Status Status Description Logged Off AgentUnavailable to the virtual ACD Available Available to accept tasksUnavailable Logged onto the virtual ACD but unavailable to acceptnon-switch related tasks and not actively engaged in any tasks On VACDTask Currently engaged on a task assigned by the virtual ACD VACD TaskPending Agent has been selected for a task and is in the process ofbeing made unavailable to the switch

These states would be used as described above to describe an agent'sstatus. Thus, the agent would be placed in the On VACD Task state whenthe virtual ACD 32 had notified an application 36 of the agent 34assigned to a request. The agent would be placed in the VACD TaskPending state while the virtual ACD 32 waited for a response from theCTI server 22 that the agent status was changed at the switch 20.Similarly, the agent status would be set to Available when the agentcompleted a task and notified the virtual ACD 32 that it was availableto accept new tasks. The status of agents with respect to the switch 20is preferably set to one of the status states in Table 2.

TABLE 2 “Switch Status” or “ACD Telephone Status” States for an AgentStatus Description Logged Off Agent is Unavailable to the switchAvailable Available to take tasks assigned by the ACD UnavailableUnavailable to take ACD tasks On Call Currently using the telephoneequipment associated with the agent. This could be an ACD telephone callor a direct call (i.e. a non-ACD call)

As will be appreciated by those of skill in the art in light of thedescription herein, these states may be set by the switch 20 withrespect to an agent in response to switch activity or in response tovirtual ACD activity. Thus, as described above, these states may be setby the virtual ACD 32 requesting the CTI server 22 to have the switch 20set the agent status to one of these states. Preferably, these statesare set as described above with respect to FIGS. 2 through 4.

As used herein, the phrases “switch status” and “ACD telephone status”are used synonymously. Furthermore, the phrase “telephone status” refersto the state of the agent's telephone equipment (e.g. off-hook, etc.).

The present invention has described status areas maintained by thevirtual ACD 32 and switch 20. These status areas may be maintained inany number of storage devices such as random access memory (RAM), orother such memory devices. The status areas may be stored in any form ofstorage including cache, memory, or file storage such as diskette orhard disk. Furthermore, the status areas may be maintained in a singlememory or multiple memories.

The foregoing is illustrative of the present invention and is not to beconstrued as limiting thereof. Although a few exemplary embodiments ofthis invention have been described, those skilled in the art willreadily appreciate that many modifications are possible in the exemplaryembodiments without materially departing from the novel teachings andadvantages of this invention. Accordingly, all such modifications areintended to be included within the scope of this invention as defined inthe claims. In the claims, means-plus-function clauses are intended tocover the structures described herein as performing the recited functionand not only structural equivalents but also equivalent structures.Therefore, it is to be understood that the foregoing is illustrative ofthe present invention and is not to be construed as limited to thespecific embodiments disclosed, and that modifications to the disclosedembodiments, as well as other embodiments, are intended to be includedwithin the scope of the appended claims. The invention is defined by thefollowing claims, with equivalents of the claims to be included therein.

That which is claimed is:
 1. A method for distributing tasks associatedwith a telephone system and tasks associated with a computer systembetween a plurality of agents, the method comprising: maintaining a listof the ACD telephone status of at least one agent of the plurality ofagents which is logged onto a telephone switch with automatic calldistribution (ACD), wherein the list of telephone status of the agentcorresponds to the status of the agent with respect to the telephoneswitch, and maintaining a copy of a call queue associated with thetelephone switch; maintaining a list of the computer status of at leastone agent of the plurality of agents which is logged onto a virtual ACD,wherein the list of computer status of the agent corresponds to whetherthe agent is currently assigned to a computer task, and maintaining acopy of a computer task request queue associated with the virtual ACD;receiving a computer task request having associated with itcharacteristics for an agent to be assigned the requested computer task;generating a list of available agents from the plurality of agents;determining if an agent of the plurality of agents is available toaccept a computer task; determining if the agent of the plurality ofagents is at least one of logged off the telephone switch and availableto take a call from the telephone switch; adding the agent of theplurality of agents to the list of available agents if the agent isavailable to accept a virtual ACD task and is at least one of logged offthe telephone switch and available to take a call from the telephoneswitch; selecting an agent from the list of available agents havingagent characteristics corresponding to the characteristics associatedwith the received request; and assigning the received computer taskrequest to the selected agent.
 2. A system for distributing tasksassociated with a telephone system and tasks associated with a computersystem between a plurality of agents, comprising: means for maintaininga list of the ACD telephone status of at least one agent of theplurality of agents which is logged onto a telephone switch withautomatic call distribution (ACD), wherein the list of ACD telephonestatus of the agent corresponds to the status of the agent with respectto the telephone switch; means for maintaining a copy of a call queueassociated with the telephone switch; means for receiving a request fora computer task, wherein the computer task comprises a task other thanPSTN or IP Telephony communications; means for receiving a computer taskrequest, wherein the computer task request has associated with itcharacteristics of an agent to be assigned the requested computer task;means for determining if an agent of the plurality of agents isavailable to accept a computer task; means for determining if the agentof the plurality of agents is at least one of logged off the telephoneswitch and available to take a call from the telephone switch; and meansfor adding the agent of the plurality of agents to the list of availableagents if the agent is available to accept a virtual ACD task and is atleast one of logged off the telephone switch and available to take acall from the telephone switch; means for selecting an agent from thelist of available agents having agent characteristics corresponding tothe characteristics associated with the received request; and means forassigning the received computer task request to the selected agent.
 3. Acomputer program product for distributing tasks associated with atelephone system and tasks associated with a computer system between aplurality of agents, comprising: a computer readable storage mediumhaving computer readable program code means embodied in said medium,said computer-readable program code means comprising: computer readableprogram code means for maintaining a list of the ACD telephone status ofat lease one agent of the plurality of agents which is logged onto atelephone switch with automatic call distribution (ACD), wherein thelist of ACD telephone status of the agent corresponds to the status ofthe agent with respect to the telephone switch; and computer readableprogram code means for maintaining a copy of a call queue associatedwith the telephone switch; computer readable program code means formaintaining a list of the computer status of at least one agent of theplurality of agents which is logged onto a virtual ACD, wherein the listof computer status of the agent corresponds to whether the agent iscurrently assigned to a computer task; computer readable program codemeans for maintaining a copy of a computer task request queue associatedwith the virtual ACID; computer readable program code means forreceiving a computer task request, wherein the computer task request hasassociated with it characteristics of an agent to be assigned therequested computer task; computer readable program code means fordetermining if an agent of the plurality of agents is available toaccept a computer task; computer readable program code means fordetermining if the agent of the plurality of agents is at least one oflogged off the telephone switch and available to take a call from thetelephone switch; and computer readable program code means for addingthe agent of the plurality of agents to a list of available agents ifthe agent is available to accept a virtual ACID task and is at least oneof logged off the telephone switch and available to take a call from thetelephone switch; computer readable program code means for selecting anagent from the list of available agents having agent characteristicscorresponding to the characteristics associated with the receivedrequest; and computer readable program code means for assigning thereceived computer task request to the selected agent.